#ifndef SEMANTICNODEPROGRAM_H_
#define SEMANTICNODEPROGRAM_H_

#include <string>
#include <sstream>
#include <vector>
#include "SemanticNode.h"


#include "../syntax_tree.h"
#include "../main_container.h"

extern MainContainer *compilerData;


class SemanticNodeNamespace;



class SemanticNodeProgram : public SemanticNode {
private:
	/** svi namespacei koji se nalaze u programu - izravnata struktura sa mogučnošću više istoimenih namespacea */
	std::vector<SemanticNodeNamespace *> namespaces;

public:
	/**
	 * Konstruktor
	 * @param syntaxNode sintaksni nod na osnovu kojeg se stvara semanticki
	 */
	SemanticNodeProgram(const SyntaxTreeNode &syntaxNode);
	virtual ~SemanticNodeProgram();

	// samo za debug
	//TODO maknut iz konacne verzije
	virtual std::string toDebugString(int tab = 0);
};

#endif /* SEMANTICNODEPROGRAM_H_ */
